"""
演示使用蒙特卡洛算法求圆周率
在一个边长为1的正方形内随机生成点，统计落在半径为1的圆内的点数量，计算圆周率
边长为1的正方形的面积是边长的平方，圆的面积是πR^2，所以在边长为1的正方形内的圆的面积是πR^2/4
由于在边长为1的正方形内的圆是四分之一个圆，所以统计出来落在这四分之一个圆内的点的比例乘以4就是圆周率的值
"""

import random

sample_num = int(input("请输入样本数量："))
# 统计落在圆内的样本数量
inner_point = 0
# π
pi = 0

for i in range(0, sample_num):
    # 生成一个均匀分布在[0, 1)中的随机数，左闭右开
    a = random.uniform(0, 1)
    b = random.uniform(0, 1)
    # 根据勾股定理，求该点举例二维坐标原点的距离，如果小于1，则表示其在半径为1的圆内
    if a * a + b * b <= 1:
        inner_point += 1

# 落在半径为1的圆内的样本点数量 /
pi = 4 * (inner_point / sample_num)

print(f"总样本数：{sample_num}，落在圆范围内的样本数：{inner_point}，圆周率近似等于：{pi}")
